<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // 1. 为什么需要Promise？

    // 需求：延迟2秒输出1，完了之后延迟1秒输出2，完了之后延迟1秒输出3

    // setTimeout(() => {
    //   console.log('setTimeout')
    // }, 3000)

    // 同步代码：串行执行，前面的代码先执行，后面的代码后执行

    // 异步代码：并行执行，大家同时开始执行，后面的代码不会等待前面代码执行完毕才执行

    // 回调地狱：回调函数的嵌套

    // 为了消除回调嵌套，Promise就应运而生了

    setTimeout(() => {
      console.log(1)
      setTimeout(() => {
        console.log(2)
        setTimeout(() => {
          console.log(3)
        }, 1000)
      }, 1000)
    }, 2000)




  </script>
</body>

</html>